<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>856. 括号的分数</title>
  </head>
  <body>
    <script>
      //     给定一个平衡括号字符串 S，按下述规则计算该字符串的分数：

      // () 得 1 分。
      // AB 得 A + B 分，其中 A 和 B 是平衡括号字符串。
      // (A) 得 2 * A 分，其中 A 是平衡括号字符串。
      //

      // 示例 1：

      // 输入： "()"
      // 输出： 1
      // 示例 2：

      // 输入： "(())"
      // 输出： 2
      // 示例 3：

      // 输入： "()()"
      // 输出： 2
      // 示例 4：

      // 输入： "(()(()))"
      // 输出： 6
      //

      // 提示：

      // S 是平衡括号字符串，且只含有 ( 和 ) 。
      // 2 <= S.length <= 50

      // 来源：力扣（LeetCode）
      // 链接：https://leetcode.cn/problems/score-of-parentheses
      // 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
      var scoreOfParentheses = function (s) {
        const st = [0]
        debugger
        for (let i = 0; i < s.length; i++) {
          if (s[i] === '(') {
            st.push(0)
          } else {
            let v = st.pop()
            let top = st.pop() + Math.max(2 * v, 1)
            st.push(top)
          }
        }
        return st[0]
      }
      console.log(scoreOfParentheses('(()(()))'))
    </script>
  </body>
</html>
